﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;

namespace BLL.Concrete
{
    public class ClientesBll : BllConnection
    {
        public IQueryable<DataAccess.Cliente> GetClientes()
        {
            return db.Clientes;
        }

        public void EliminarCliente(int idCliente)
        {
            ImagenBll imagenBll = new ImagenBll();

            var cliente = GetClientes().Single(u => u.Id == idCliente);
            var idImagenColor = cliente.IdImagenColor;
            var idImagenBlancoNegro = cliente.IdImagenBlancoNegro;

            db.Clientes.DeleteOnSubmit(cliente);
            db.SubmitChanges();

            imagenBll.EliminarImagen(idImagenColor);
            imagenBll.EliminarImagen(idImagenBlancoNegro);
        }

        public int InsertCliente(string nombre, HttpPostedFileBase imagenColor,HttpPostedFileBase imagenBlancoNegro)
        {
            ImagenBll imageBll = new ImagenBll();
            int idImagenColor = imageBll.InsertImage(imagenColor);
            int idImagenBlancoNegro = imageBll.InsertImage(imagenBlancoNegro);

            DataAccess.Cliente cliente = new DataAccess.Cliente
            {                
                Nombre = nombre,
                IdImagenBlancoNegro = idImagenBlancoNegro,
                IdImagenColor = idImagenColor
            };

            db.Clientes.InsertOnSubmit(cliente);
            db.SubmitChanges();
            return cliente.Id;
        }

        public void UpdateCliente(int idCliente, string nombre, HttpPostedFileBase imagenColor, HttpPostedFileBase imagenBlancoNegro)
        {
            DataAccess.Cliente cliente = db.Clientes.Single(u => u.Id == idCliente);
            ImagenBll imagenBll = new ImagenBll();
            if (imagenColor != null)
            {                
                imagenBll.UpdateImagen(cliente.IdImagenColor, imagenColor);
            }
            if (imagenBlancoNegro != null)
            {
                imagenBll.UpdateImagen(cliente.IdImagenBlancoNegro, imagenBlancoNegro);
            }

            cliente.Nombre = nombre;            
            db.SubmitChanges();
        }
    }
}
